OAuth2 এর মাধ্যমে Third-Party Login Integration

Java Technologies - স্প্রিং সিকিউরিটি (Spring Security) - OAuth2 এবং Spring Security Integration
150

OAuth2 (Open Authorization 2) হল একটি অটোরাইজেশন ফ্রেমওয়ার্ক যা ব্যবহারকারীদের তাদের তৃতীয় পক্ষের অ্যাকাউন্ট (যেমন Google, Facebook, GitHub, Twitter) দিয়ে আপনার অ্যাপ্লিকেশনে লগইন করতে সক্ষম করে। এই প্রক্রিয়ায়, ব্যবহারকারীরা তাদের প্রমাণীকরণ এবং অনুমোদন তৃতীয় পক্ষের প্রদানকারী (যেমন Google) এর মাধ্যমে সম্পন্ন করেন এবং তারপর আপনার অ্যাপ্লিকেশনকে নির্দিষ্ট ডেটা অ্যাক্সেস করতে অনুমতি দেন।

Spring Security আপনাকে সহজেই OAuth2.0 ব্যবহার করে তৃতীয় পক্ষের লগইন ইন্টিগ্রেট করতে সাহায্য করে। এতে সাধারণত Google বা GitHub এর মত OAuth2 সাপোর্ট করা প্রোভাইডার ব্যবহার করা হয়।


OAuth2 Third-Party Login Integration (Spring Security)

Spring Security OAuth2 অটোমেটিক্যালি OAuth2 প্রটোকলের মাধ্যমে তৃতীয় পক্ষের সেবা ব্যবহারকারীর অ্যাক্সেস করতে এবং প্রমাণীকরণ করতে সক্ষম করে। এখানে Google এর মাধ্যমে OAuth2 login ইন্টিগ্রেট করার উদাহরণ দেওয়া হলো।


ধাপ ১: ডিপেন্ডেন্সি যোগ করা

Spring Boot প্রজেক্টে OAuth2 সমর্থন যোগ করতে প্রথমে spring-boot-starter-oauth2-client ডিপেন্ডেন্সি যুক্ত করুন।

Maven:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>

Gradle:

implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'

ধাপ ২: অ্যাপ্লিকেশন কনফিগারেশন

Spring Boot অ্যাপ্লিকেশনে OAuth2 কনফিগারেশনের জন্য, application.yml বা application.properties ফাইলে প্রোভাইডারের তথ্য যুক্ত করুন। এখানে উদাহরণ হিসেবে Google OAuth2 কনফিগারেশন দেওয়া হয়েছে।

application.yml ফাইল কনফিগারেশন:

spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: YOUR_GOOGLE_CLIENT_ID
            client-secret: YOUR_GOOGLE_CLIENT_SECRET
            scope:
              - openid
              - profile
              - email
            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
            authorization-grant-type: authorization_code
            client-name: Google
        provider:
          google:
            authorization-uri: https://accounts.google.com/o/oauth2/auth
            token-uri: https://oauth2.googleapis.com/token
            user-info-uri: https://www.googleapis.com/oauth2/v3/userinfo

এখানে, আপনাকে YOUR_GOOGLE_CLIENT_ID এবং YOUR_GOOGLE_CLIENT_SECRET আপনার Google Developer Console থেকে নিতে হবে।


ধাপ ৩: Spring Security কনফিগারেশন

Spring Security-এর কনফিগারেশনে OAuth2 লগইন সক্ষম করতে WebSecurityConfigurerAdapter কনফিগার করতে হবে।

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/", "/login").permitAll() // Public pages
                .anyRequest().authenticated() // Secure pages require authentication
            .and()
            .oauth2Login() // Enable OAuth2 Login
                .loginPage("/login"); // Custom login page (optional)
    }
}

এই কনফিগারেশনটি OAuth2 লোগিন পেজ তৈরি করে এবং Google OAuth2 মাধ্যমে লগইন করার সুযোগ দেয়।


ধাপ ৪: Custom Login Page (অপশনাল)

যদি আপনি কাস্টম লগইন পেজ ব্যবহার করতে চান, তবে আপনি একটি Controller এবং একটি থাইমলিফ (Thymeleaf) বা HTML পেজ তৈরি করতে পারেন।

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class LoginController {

    @GetMapping("/login")
    public String login() {
        return "login";  // Login page view (HTML or Thymeleaf template)
    }
}

login.html (উদাহরণ)

<!DOCTYPE html>
<html>
<head>
    <title>Login</title>
</head>
<body>
    <h2>Login Page</h2>
    <a href="/oauth2/authorization/google">Login with Google</a>
</body>
</html>

ধাপ ৫: প্রোফাইল ডেটা পাওয়া

OAuth2 লোগইন সফল হলে, ব্যবহারকারীর প্রোফাইল ডেটা পাবেন। এটি ব্যবহারের জন্য OAuth2User এবং OAuth2AuthenticationToken ব্যবহার করতে হবে।

import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.security.oauth2.core.user.OAuth2UserAuthority;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.security.core.annotation.AuthenticationPrincipal;

@Controller
public class ProfileController {

    @GetMapping("/profile")
    public String getProfile(@AuthenticationPrincipal OAuth2User principal, Model model) {
        model.addAttribute("name", principal.getAttribute("name"));
        model.addAttribute("email", principal.getAttribute("email"));
        return "profile";  // Display user's profile
    }
}

profile.html (উদাহরণ)

<!DOCTYPE html>
<html>
<head>
    <title>User Profile</title>
</head>
<body>
    <h2>Welcome, {{name}}</h2>
    <p>Email: {{email}}</p>
</body>
</html>

ধাপ ৬: Testing OAuth2 Login

  • আপনার অ্যাপ্লিকেশন চালু করুন।
  • /login পৃষ্ঠায় গিয়ে "Login with Google" এ ক্লিক করুন।
  • Google এর লগইন স্ক্রীনে গিয়ে অনুমতি প্রদান করুন।
  • সফল লগইন হলে, ব্যবহারকারীর প্রোফাইল ডেটা /profile পৃষ্ঠায় প্রদর্শিত হবে।

উপসংহার

Spring Security দিয়ে OAuth2 তৃতীয় পক্ষের লগইন ইন্টিগ্রেট করা খুবই সহজ এবং সুরক্ষিত। এই প্রক্রিয়া দিয়ে আপনি বিভিন্ন প্রোভাইডার (যেমন Google, Facebook, GitHub, etc.) থেকে ব্যবহারকারীদের লগইন করতে সক্ষম হবেন। এতে, ব্যবহারকারীরা তাদের পরিচয় যাচাইয়ের জন্য তৃতীয় পক্ষের সেবার উপর নির্ভর করে, এবং আপনার অ্যাপ্লিকেশন তাদের কাছ থেকে শুধু প্রয়োজনীয় ডেটা নেয়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...